package tp2;

import java.util.*;

public class TrieNode {
	
	public  List<TrieNode> _hijos;
	public  StringC  _clave;
	public TrieNode _padre;
//	public String _significado;
	
	private Estadistica es;
	
	
	public TrieNode(Estadistica esEnt){
		_hijos = new LinkedList<TrieNode>();
		_clave = null;
		_padre = null;
//		_significado = null;
		es = esEnt;
	}
	
	public TrieNode(TrieNode t, Estadistica esEnt){
		es = esEnt;
		for(TrieNode h: t._hijos)
			_hijos.add(new TrieNode(h,es));
	}
	
	public int indiceDe(StringC s, int hasta){ //O(hasta)
		int ret = 0;
		for(TrieNode h:_hijos){
			if(h._clave.length()>=hasta)
			if(h._clave.comparar(0,s, 0, hasta))	return ret;
			
//			if(h._clave.substring(0, hasta).equals(s.substring(0, hasta))) return ret;
			ret++;
		}
		return -1;
	}
	/*	
  public void copiar(TrieNode tn) {
		    if (tn._clave != null) {
		    	_clave = new String(tn._clave);
		    }

		    for(TrieNode h:tn._hijos){
		    TrieNode auxH = new TrieNode(h);
		    _hijos.add(auxH);     
		    _hijos.get(_hijos.size()-1).copiar(tn._hijos.get(_hijos.size()-1));
		    }
		    }
  */
  public Pair<Boolean,Integer> esHijo(StringC str){ //si ret true devuelve la cantidad de caracteres de concordancia
	  if(_hijos==null||_hijos.size()==0) return new Pair<Boolean,Integer>(new Boolean(false),new Integer(0));
	
	  for(TrieNode h: _hijos){
		  Pair<Boolean,Integer> res = h._clave.esPrefijoHasta(str);
		  if(res.fst) return res;
		  }
	  return new Pair<Boolean,Integer>(new Boolean(false),new Integer(0));
	  	  /*
	  if(_hijos==null||_hijos.size()==0) return new Pair<Boolean,Integer>(new Boolean(false),new Integer(0));

	  int i = 1;
	  for(TrieNode h: _hijos)
		  if(h._clave.substring(0, 1).equals(str.substring(0, 1))){
		  for(i = 1;i<=str.length() && h._clave.startsWith(str.substring(0, i));i++);
		  return new Pair<Boolean,Integer>(new Boolean(true),new Integer(i-1));
		  }
	
	return new Pair<Boolean,Integer>(new Boolean(false),new Integer(0));
	*/
  }
  
  
}	

